package com.system.framework.thradlocal;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 上下文
 *
 * @author 程序员Mars
 */
public class ContextHolder {

    public static final Logger log = LoggerFactory.getLogger(ContextHolder.class);

    /**
     * 使用ThreadLocal维护变量，ThreadLocal为每个使用该变量的线程提供独立的变量副本，
     * 所以每一个线程都可以独立地改变自己的副本，而不会影响其它线程所对应的副本。
     */
    private static final ThreadLocal<String> GLOBAL_CONTEXT = new ThreadLocal<>();

    /**
     * 设置数据源的变量
     */
    public static synchronized void setContext(String value) {
        GLOBAL_CONTEXT.set(value);
    }

    /**
     * 获得的变量
     */
    public static synchronized String getContext() {
        return GLOBAL_CONTEXT.get();
    }

    /**
     * 清空变量
     */
    public static void clearContext() {
        GLOBAL_CONTEXT.remove();
    }
}
